package cn.iocoder.yudao.module.digital.controller.admin.competition.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 竞赛新增/修改 Request VO")
@Data
public class CompetitionSaveReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "426")
    private Integer id;

    @Schema(description = "竞赛名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @NotEmpty(message = "竞赛名字不能为空")
    private String name;

    @Schema(description = "比赛级别(A+,A等等，字典)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "比赛级别(A+,A等等，字典)不能为空")
    private Integer type;

    @Schema(description = "主办方（字典）")
    private Integer organizer;

    @Schema(description = "主办方（不在字典里面）")
    private String organizerOther;

    @Schema(description = "获奖级别（省级，国家级，校级）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "获奖级别（省级，国家级，校级）不能为空")
    private Integer level;

    @Schema(description = "第一指导老师", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "第一指导老师不能为空")
    private String author;

    @Schema(description = "成员", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "成员不能为空")
    private String member;

    @Schema(description = "竞赛负责人", requiredMode = Schema.RequiredMode.REQUIRED)
    private String competitionOrganizer;

    @Schema(description = "贡献率数组，0号元素是负责人，后面的是成员", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "贡献率数组不能为空")
    private String rate;

    @Schema(description = "获奖时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "获奖时间不能为空")
    private LocalDateTime competitionTime;

    @Schema(description = "排名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "排名不能为空")
    private Integer rank;

    @Schema(description = "佐证地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.chanchat.cn")
    @NotEmpty(message = "佐证地址不能为空")
    private List<String> evidenceUrl;

    @Schema(description = "备注", example = "随便")
    private String remark;

    @Schema(description = "保留字段")
    private String reserved1;

    @Schema(description = "保留字段")
    private String reserved2;

    @Schema(description = "保留字段")
    private String reserved3;

    @Schema(description = "保留字段")
    private String reserved4;

    @Schema(description = "保留字段")
    private String reserved5;

}